use serde::{Serialize, Deserialize};
use crate::extends::core::db::sql_direction::DirectionEnum;
use rocket_okapi::okapi::schemars;
use rocket_okapi::okapi::schemars::JsonSchema;
/// 表示排序规则的结构体
#[derive(Debug, Clone, Deserialize, Serialize, JsonSchema)]
pub struct Order {
    #[schemars(description = "需要排序的属性名")]
    pub property: String,
    #[schemars(description = "排序方向（ASC 或 DESC）")]
    pub direction: DirectionEnum,
}

impl Order {
    /// 创建新的 Order 实例
    ///
    /// # 参数
    /// * `property` - 需要排序的属性名
    /// * `direction` - 排序方向（ASC 或 DESC）
    ///
    /// # 返回值
    /// 返回一个新的 Order 实例
    pub fn new(property: String, direction: DirectionEnum) -> Self {
        Order {
            property,
            direction,
        }
    }
}

fn main() {
    // 创建一个使用升序排序的 Order 实例
    let order_asc = Order::new("name".to_string(), DirectionEnum::ASC);
    log::info!("{:?}", order_asc);

    // 创建一个使用降序排序的 Order 实例
    let order_desc = Order::new("created_at".to_string(), DirectionEnum::DESC);
    log::info!("{:?}", order_desc);
}
